import matplotlib.pyplot as plt
import numpy as np  # 用于生成示例数据，你可替换为自己的列表

# 1. 准备你的连续有序数据 (这里用随机数据示例，请替换为你的list)
your_data_list = [105, 108, 112, 115, 118, 120, 119, 125, 130, 132, 135, 137, 140, 138, 135, 133, 130, 128, 125, 122]
# 假设这些数据点对应于顺序的x轴（如时间点、序列号等）
x_positions = list(range(len(your_data_list)))  # 生成 [0, 1, 2, 3, ..., 19]

# 2. 创建图表和坐标轴
fig, ax = plt.subplots(figsize=(12, 6))  # 调整图形尺寸

# 3. 绘制折线图，并自定义样式
#    'o-' 表示数据点用圆点标记，并用实线连接
#    你可以根据需要调整颜色、线条粗细、标记大小等
line_plot = ax.plot(x_positions, your_data_list, 'o-', color='steelblue', linewidth=2, markersize=8, label='数据趋势')

# 4. 在每个数据点上标注数值
for x, y in zip(x_positions, your_data_list):
    # ha: 水平对齐方式, va: 垂直对齐方式
    # 稍微调整文本的y位置，避免重叠
    ax.text(x, y + 1, f'{y}', ha='center', va='bottom', fontsize=9, fontweight='bold')

# 5. 添加图表装饰和信息，使图表更清晰
ax.set_title('连续有序数据变化趋势', fontsize=15, pad=20)
ax.set_xlabel('数据点顺序', fontsize=12)
ax.set_ylabel('数据值', fontsize=12)
ax.grid(True, linestyle=':', alpha=0.7)  # 添加网格线
ax.legend(loc='upper left')  # 显示图例

# 6. 根据数据范围自动调整y轴显示范围，为标注留出空间
y_min = min(your_data_list)
y_max = max(your_data_list)
ax.set_ylim(y_min - (y_max - y_min)*0.05, y_max + (y_max - y_min)*0.15) # 调整y轴范围

# 7. 显示图形
plt.tight_layout()
plt.show()